最近想理解計算機網路的概念,所以選擇了清華大學開放式課程來精進自己,選擇了 黃能富教授
的 計算機網路概論
我覺得講得非常好,在此做一個自己上課的筆記,希望可以幫助到大家,也希望大家有時間可以去看看這門非常好的課程。
ACKs
機制,所以無法確認對方設備是否有收到。Carrier Sense Multiple Access with Collision Detection (CSMA/CD)
任何一台電腦將訊號送上 bus 後訊號會往自身的兩邊端點傳送,在最終端的部分會有終端器,用於將訊號吸收避免訊號反彈。
由於訊號是在 Cable 上面傳輸,所以當 Cable 長度太長會造成後面的訊號衰減導致資料傳輸錯誤,所以會有 Cable 長度的限制。
Ethernet(10Base5) 代表傳輸速率是 10 Mbps,Base 代表只有一個 channel, 5 代表一段最長是 500 公尺,如果需要延長傳輸的距離可以加上 repeaters
,雖然 repeaters 收到的訊號可能會受到干擾或削弱,但他還可以偵測到資料原本的樣子並將失真移除將訊號變回最初的樣子,所以可以利用 repeater 將衰減的訊號補救以此延長傳輸距離,但由於效率的問題所以 最多只能增加 4 個 repeater 也就是最長只能 2500 公尺
。
又稱為 細線的 Ethernet
, 一樣傳輸速率為 10Mbps,一個 channel 但傳輸距離只有 2 公尺
一樣是利用 Cable 傳輸數據,一樣使用 CSMA/CD
Protocol 只是線比較細傳輸距離比較短,所以也需要利用 repeaters
延長傳輸距離,也需要在終端連接終端器以防止訊號反彈。
T 代表 twisted pair(雙絞線)
,將線互相纏繞在一起以減少外部的雜訊。
傳輸速率一樣式 10 Mbps,也是一個 channel 但傳輸距離只有 1 公尺,但與上兩個不同的點在於它的接頭是雙向的,一邊接上設備一邊接上 Ethernet 的設備,而 Ethernet 設備稱為 Hub,使用 Hub 可以有效的管理多個設備的連接。
Star
結構中的轉寄站不是 Hub 而是 Switch
,他與 Hub 不同的點在於 Hub 只是單純的負責傳送訊號是 Layer 1 的設備,但 Switch 則會 把每個封包收下並處理封包裡面的內容
是一個 Layer 2 的設備,可以看成每個 Port 都是一張獨立的網卡,所以當 Cable 連接到 Switch 與設備上時,可以把它看成 Host to Host
的架構,簡單來說就是這個網路只有兩台設備互相連接,就不會有訊號廣播造成訊號衝突的問題。
所以如果使用的是 Hub 的話,訊號會在整個網路中廣播,但使用 Switch 的話則會收下封包並查看需要傳送給哪一個設備,由於每個 Port 都是獨立的網卡,所以可以同時處理多個封包得傳輸
。
Switch 用於 Stat topology 結構的中心,用於當作傳送資料的中繼站,其最大的特色在於 Switch 的每個 Port 都可以看作獨立的網卡,代表可以同時傳輸多個來源的訊號而不會互相干擾
。
Ethernet 在傳輸資料時也會將自己的 Header 加在資料上,下面為 Header 的介紹
1500 bytes
。由於 DA, SA, Type, FCS 四個加起來為 18 bytes,所以一個 Ethernet 最大不能超過 1518 bytes
,最小不能小於 64 bytes
Unique Ethernet Address
網卡
還非設備8:0:2b:e4:b1:2
由於全世界每個國家的網路公司都可以生產網卡,所以每個公司需要申請屬於自己公司的 prefix
,比如 AMD 公司具有 8:0:20
的專有的 prefix id。
由於 Ethernet 的傳播是廣播的形式,所以每個網卡都會收到每一筆利用 Ethernet 傳播的數據,但由於封包中的 DA 已經標注了發送的目的地,所以網卡會把封包中的 DA 抓下來和自身的 Address 比對,如果一樣則收下反之無視,這個行為稱為 unicat address,
而如果 DA 中的內容為 全部都是 1
則代表這個訊號是廣播的,在這條線路上面的每個網卡都需要將此數據收下,這個行為稱為 broadcast address
。
也可以利用 program
的方式將網卡的 Address 設定群組,當 DA 中的位置符合該群組的位置時,則代表該群組中的每個網卡都需要將此訊號收下,這個行為稱為 multicast address
。
總而言之 Ethernet 的傳播方式分為以下三種:
own address
broadcast address
multicast address
if it hasinstructed
在 Ethernet 中傳輸的訊號都會在線路上以廣播的方式傳播,所以在線路上的每個設備都會收到該訊號,所以檢測該線路上是否有其他設備傳輸的訊號就尤為重要,如果線路上正有其他設備傳輸的訊號,但還是發送了別的訊號上去,這樣就會造成訊號衝突導致毀損。
CSMA 最核心的想法就是在發送訊號前先聆聽線路上是否有正在傳輸的訊號
,這個行為稱為 Carrier Sense
,如果線路中沒有訊號(idle)就發送自己的封包到線路中,反之如果線路中已有訊號(busy)則停止發送等待線路回歸 idle。
雖然能夠偵測線路中是否有訊號在傳播,但假如今天有兩個設備彼此相離很遠,當 A 發出訊號時,由於傳輸需要時間,B 在偵測線路中是否有訊號時 A 發送的訊號還沒傳到 B,所以 B 就會認為目前線路是 idle 於是也把訊號發送上去,這樣就會導致 A 與 B 的訊號發生衝撞,這個行為就稱為 Collisions
。
雖然 CMSA 可以偵測線路中是否有訊號以減少訊號衝突的機會,但以上面的例子來看 CSMA 機制有是有可能發生衝撞的,當衝撞發生時 CMSA 機制並不會監測到有衝撞,這樣會導致即使發生了衝撞卻持續送訊號非常沒有效率,所以就衍生了 CD (Collision Detection)
機制,當衝撞發生時可以檢測到,而當 CSMA/CD 偵測到發生了 Collision 時,會立刻將傳輸的行為停止
以減少資源浪費。
當偵測到發生訊號衝撞時,會發出一個 32 bits
的訊號用於將衝突的訊號更加打散,因為如果只是發生輕微的訊號衝撞,那麼還是有可能會被其他網卡解析出錯誤的訊號,所以會發出這個訊號將衝突訊號全部打散用於告訴所有網卡這個訊號是衝突過的不要再解析他,這個 32 bits 的訊號稱為 Jamming Sequence
。
如果兩個設備在距離非常近的情況下發生 Collision 的話,在線路上傳輸的 frame 就稱為 runt frame
,簡單來說兩個非常靠近的設備同時發送訊號上去便會非常快的發生 Collision,所以在兩設備傳出封包最前面的 Preamble
時就衝突了,一但發生衝突就會發送 32 bits 的 Jamming Sqeuence,所以這個最短的 runt frame 就會等於 Preamble (64 bits) + Jamming Sequence (32 bits)
。
當 A, B 兩台設備位於線路的兩端,當 A 設備在線路上發出自己的訊號經過傳輸時間後抵達 B 設備後,在 B 設備的附近發生了 Collision,那麼這個 Collision 的訊號也會需要經過線路的傳輸時間才會回到設備 A,所以設備 A 偵測到 Collision 的時間需要是傳輸到最遠距離的兩倍,而這個時間就稱為 Collision Window
,簡單來說就是就是訊號在最遠距離下來回所花費的時間就是 Collision Window
。
所以設備在監聽線路上是否有 Collision 的時間不能小於 Collision Window,等於說在 Collision Window 的的時間內不能將封包送完,如果設備把封包送完後就不知道這個 Collision 是不是自己的,因為已經送完全部的封包,這時傳來的 Collision 就可能是其他設備產生的而不是剛剛送的訊號。
由於電子在 2500 公尺的線路上來回的時間是 51.2 us
,而 Ethernet 的傳輸速率是 10 Mbps
,將兩個相乘可以得到 51.2 us * 100 Mbps = 512 bits
,代表如果設備要在最長的距離中知道自己的訊號發生 Collision,那麼傳輸的訊號就不能小於 512 bits,這也是一個 Ethernet 不能小於 64 bytes 的原因。
當設備將訊號送上線路卻發生 Collision 後,設備就會等待一個時間後再傳送一次訊號,但如果整個網路的 loading 很大,設備每偵測到訊號發生 Collision,那麽每次設備等待的時間就會加長,這個延長的時間稱為 Exponential Backoff Time
。
0s
或 51.2us
後再次經過 CSMA/CD 發送訊號k * 51.2 for k = 0,1,2,3
k = 0 ~ 2^n - 1
,所以如果衝撞發生三次,那麼就會由原本的時間乘上(0 ~ (2^3-1)) ⇒ 0 ~ 7。16
次,就會放棄此次的傳輸,而如果衝突的次數大於 10 次, 2^n 的 n 值就不會大於 10。國立清華大學開放式課程 - 計算機網路概論 - IEEE 802.3 乙太網路 (Ethernet) (黃能富 教授)
bus lan 我最後一次看到她的時候大概是 1997 年吧
之後都是 100baseT 的 RJ45 JACK 星狀拓樸
BUS LAN 那個夾線真的是惡夢,手上要有好幾件工具才能夾得好
終端電阻也是個問題,有看過那個電阻莫名沒有功用,或是拉到某個地方然後另外一個工程師沒有上上去,結果PING某台或是某個方向,那個方向的電腦永遠都沒有回應,BUS LAN真的很麻煩的